import java.util.Arrays;

public class JavaSE728 {
    //数组的创建
/*    int [] arr = new int[] {1,2,3};
    int [] array = new int[10];*/
    /*int arr[] = new int[5];*/
/*    public static void main(String[] args) {*/
/*        //遍历数组
        int [] arr = new int[] {1,2,3,4,5,6,7,8,9};
        for(int i = 0; i < 9; i++) {
            System.out.print(arr[i] + "\t");
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
        for (int x:arr) {
            System.out.print(x + "\t");
        }*/

        //数组拷贝
        /*int[] arr = {1,2,3,4};
        int[] array = arr;
        int[] array1 = Arrays.copyOf(arr,arr.length);
        int[] array2 = Arrays.copyOfRange(arr,2,3);
        System.out.println(Arrays.toString(array));
        System.out.println(Arrays.toString(array1));
        System.out.println(Arrays.toString(array2));*/

        //求数组元素的平均值
        /*int[] array = {1,2,3,4};
        int sum = 0;
        double avg = 0;
        for (int x:array) {
            sum += x;
        }
        avg = sum / (double)array.length;
        System.out.println(avg);*/

/*        //顺序查找指定元素
        int[] arr = {1,8,9,3,7,59,6};
        int count = 0;
        for(int x : arr) {
            if (x == 59) {
                System.out.println("下标是:" + count);
                System.out.println("找到了");
            }else {
                count++;
                continue;
            }
        }*/


/*        //二分查找,只可以用于有序的数组
        int[] arr = {14,15,36,49,59,88};
        int num = 59;
        int mid = arr.length / 2;
        int left = 0;
        int right = arr.length - 1;
        while (left <= right) {
            if (arr[mid] == num) {
                System.out.println(mid);
                System.out.println("找到了");
                break;
            }else if (arr[mid] > num) {
                right = mid - 1;
                mid = (left + right) / 2;
            }else {
                left = mid + 1;
                mid = (left + right) / 2;
            }
        }*/


/*        //冒泡排序
        int[] arr = {15,96,55,3,1,58};
        int temp = 0;
        //趟数
        for (int i = 0; i < arr.length - 1; i++) {
            //每趟比较的次数
            for (int j = 0; j < arr.length - 1; j++) {
                if (arr[j] < arr[j + 1]) {
                    continue;
                }else {
                    temp = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(arr));*/

/*        //数组逆序
        int[] arr = {12,59,86,1,58,33};
        int left = 0;
        int right = arr.length - 1;
        int temp = 0;
        while (left < right) {
            temp = arr[right];
            arr[right] = arr[left];
            arr[left] = temp;
            left++;
            right--;
        }
        System.out.println(Arrays.toString(arr));*/

       /* int[][] arr= new int[2][3];*/

  /*  }*/

    /*
     * 实现一个方法 transform, 以数组为参数,
     * 循环将数组中的每个元素 乘以 2 , 并设置到对应的数组元素上.
     *  例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}
     * */
/*    public static void transform(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            arr[i] = arr[i] * 2;
        }
    }
    public static void main(String[] args) {
        int[] arr = {1,2,3};
        transform(arr);
        System.out.println(Arrays.toString(arr));
    }*/

    /*
    * 调整数组顺序使得奇数位于偶数之前。调整之后，不关心大小顺序。
        如数组：[1,2,3,4,5,6]
        调整后可能是：[1, 5, 3, 4, 2, 6]
    * */

/*    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6};
        int left = 0;
        int right = arr.length - 1;
        int temp = 0;
        while (left < right) {
            if (arr[left] % 2 == 0) {
                if (arr[right] % 2 == 0) {
                    right--;
                }else {
                    temp = arr[left];
                    arr[left] = arr[right];
                    arr[right] = temp;
                    right--;
                    left++;
                }
            }else {
                left++;
            }
        }
        System.out.println(Arrays.toString(arr));*/

      //给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。
    //异或
      /*public static void main(String[] args) {
          int[] arr = {4,1,2,1,2};
          // 用异或运算的性质可以巧妙的解决这个问题，因为数组中只有一个数字出现一次
          // 则其他出现两次的数字用异或运算后都是0，最终整个数组异或运算的结果即为所求。
          //n ^ n =0   n ^ 0 = 0
          int ret = 0;
          for (int i : arr) {
              ret ^= i;// 4 ^ 1 ^ 2 ^ 1 ^ 2    1 ^ 2 ^ 1 ^ 2这部分结果为0  4^0=4
          }
          System.out.println(ret);*/
        /*
        * 给定一个大小为 n 的数组，找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的，并且给定的数组总是存在多数元素。
        * n/2这不就是mid嘛，我们应先排序然后再求mid及为多数
        *  */
/*      public static void main(String[] args) {
          int[] arr = {2,2,1,1,1,2,2};
          Arrays.sort(arr);
          System.out.println(arr[arr.length/2]);
      }*/


}
